package LanQiaoCompetition.LanQiaoCompetition2;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

public class Basic {

    public static void main(String args[]){
        int n = 1000;
        String n1 = "3165461456486414864864";
        String n2 = "3515348615648641564485";
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(3);
        //basic_30(n);
        //basic_29(n1,n2);
        //System.out.println(basic_28(list));
    }

    //高精度的阶乘计算 BigInteger
    private static void basic_30(int n){
        BigInteger bigInteger = new BigInteger("1");
        for(int i=1;i<=n;i++){
            bigInteger = bigInteger.multiply(new BigInteger(String.valueOf(i)));
        }
        System.out.println(bigInteger.toString().length());
    }

    //高精度的加法计算 BigInteger
    private static void basic_29(String n1,String n2){
        BigInteger bigInteger1 = new BigInteger(n1);
        BigInteger bigInteger2 = new BigInteger(n2);
        bigInteger1 = bigInteger1.add(bigInteger2);
        System.out.println(bigInteger1);
    }

    //哈夫曼树 递归
    private static Integer basic_28(List<Integer> list){
        int a =0 , b = 0;
        int min1=101 , min2=101;
        if(list.size()==1){
            return list.get(0);
        }
        else {
            for(int i=0;i<list.size();i++){
                if(list.get(i)<min1){
                    min1 = list.get(i);
                }
                else if(list.get(i)<min2){
                    min2 = list.get(i);
                }
            }
            list.remove(new Integer(min1));
            list.remove(new Integer(min2));
            list.add(min1+min2);
            return basic_28(list);
        }
    }

}
